#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from flask import Flask, render_template, jsonify, request
import sys
import os
from dotenv import load_dotenv, find_dotenv

# 添加当前目录到Python路径
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

def init_env():
    """加载 .env 环境变量并保留系统已设置的值

    - 使用 python-dotenv 从当前或上级目录查找并加载 `.env`
    - 设置 override=False，避免覆盖已有系统环境变量（如 Docker 或手动设置）
    """
    dotenv_path = find_dotenv()
    if dotenv_path:
        load_dotenv(dotenv_path=dotenv_path, override=False)
    else:
        # 未找到 .env 时，不抛错，保持系统环境变量可用
        pass

# 初始化环境变量（在导入业务模块前执行）
init_env()

from get_random_songs import get_random_songs, get_song_download_urls, search_songs

app = Flask(__name__, 
            template_folder='templates',
            static_folder='static')

@app.route('/')
def index():
    """首页 - 显示随机歌曲或搜索结果"""
    # 检查是否有搜索关键词
    keyword = request.args.get('keyword', '').strip()
    
    if keyword:
        # 如果有搜索关键词，显示搜索结果
        songs = search_songs(keyword, 50)
    else:
        # 否则显示随机歌曲
        songs = get_random_songs(50)
        
    return render_template('index.html', songs=songs, keyword=keyword)

@app.route('/api/random_songs')
def api_random_songs():
    """API接口 - 获取随机歌曲"""
    limit = request.args.get('limit', 50, type=int)
    songs = get_random_songs(limit)
    return jsonify(songs)

@app.route('/api/song/<int:song_id>/download_urls')
def api_song_download_urls(song_id):
    """API接口 - 获取歌曲下载链接"""
    download_urls = get_song_download_urls(song_id)
    return jsonify(download_urls)

@app.route('/api/search')
def api_search_songs():
    """API接口 - 搜索歌曲"""
    keyword = request.args.get('keyword', '').strip()
    limit = request.args.get('limit', 50, type=int)
    
    if not keyword:
        return jsonify([])
    
    songs = search_songs(keyword, limit)
    return jsonify(songs)

@app.route('/about')
def about():
    """关于页面"""
    return render_template('about.html')

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5001, debug=True)